﻿#ifndef TLVCMDTASK_H
#define TLVCMDTASK_H

#include "ITask.h"
#include "TaskDataTypeDef.h"


// 任务类
class TlvCmdTask : public ITask
{
    Q_OBJECT
public:
    explicit TlvCmdTask(QObject *parent = nullptr);
    ~TlvCmdTask();

    void stop();

    void setRunIICCmds(const QList<IICSend_t>& cmds);
    void setRunTlvCmds(const QList<TlvSend_t>& cmds);
    void setRunCnt(int cnt);

    static TlvCmdTask* instance();

signals:
    void hasDone(int cnt, int progress);

private:
    void runIIC();
    void runTlv();
    void _run();
    void runTask() override;  // 真正执行任务的逻辑

private:
    QList<IICSend_t> m_iicCmds;
    QList<TlvSend_t> m_tlvCmds;
    bool m_isIIC;
    int m_runCnt;
    bool m_requestStop;
};


#endif // TLVCMDTASK_H
